Understanding Generalization In Deep Learning